//
//                       _oo0oo_
//                      o8888888o
//                      88" . "88
//                      (| -_- |)
//                      0\  =  /0
//                    ___/`---'\___
//                  .' \\|     |// '.
//                 / \\|||  :  |||// \
//                / _||||| -:- |||||- \
//               |   | \\\  - /// |   |
//               | \_|  ''\---/''  |_/ |
//               \  .-\__  '-'  ___/-. /
//             ___'. .'  /--.--\  `. .'___
//          ."" '<  `.___\_<|>_/___.' >' "".
//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//         \  \ `_.   \_ __\ /__ _/   .-` /  /
//     =====`-.____`.___ \_____/___.-`___.-'=====
//                       `=---='
//
//
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//           佛祖保佑       永不宕机     永无BUG

export default {
	// 开启命名空间
	namespaced: true,

	// state 数据
	state: () => ({
		// 收货地址
		//读取本地的收货地址数据，初始化 address 对象
		address: JSON.parse(uni.getStorageSync('address') || '{}'),
		// 登录成功之后的 token 访问凭证(凡是涉及到登录操作的调用接口之后打都会返会一个token值，它相当于一把钥匙，每次登录都需要携带该参数)
		token: uni.getStorageSync('token') || '',
		// 获取用户基本信息，其中包含用户的昵称、头像等
		userinfo: JSON.parse(uni.getStorageSync('userinfo') || '{}'),
		// 重定向的object对象
		redirectInfo:null
	}),

	// 方法
	mutations: {
		// 更新收货地址
		updateAddress(state, address) {
			state.address = address
			this.commit('m_user/saveAddressToStorage')
		},
		// 将数据保存到本地
		saveAddressToStorage(state) {
			uni.setStorageSync('address', JSON.stringify(state.address)) //JSON.stringify:将数据转换成字符串
		},
		// 更新用户基本信息
		updateUserInfo(state, userinfo) {
			state.userinfo = userinfo
			// 通过 this.commit() 方法，调用 m_user 模块下的 saveUserInfoToStorage 方法，将 userinfo 对象持久化存储到本地
			this.commit('m_user/saveUserInfoToStorage')
		},

		updateToken(state, token) {
			state.token = token
			// 通过 this.commit() 方法，调用 m_user 模块下的 saveTokenToStorage 方法，将 token 对象持久化存储到本地
			this.commit('m_user/saveTokenToStorage')
		},
		saveUserInfoToStorage(state) {
			// 本地持久化存储用户信息
			uni.setStorageSync('userinfo', JSON.stringify(state.userinfo)) //JSON.stringify:将数据转换成字符串
		},
		saveTokenToStorage(state) {
			// 本地持久化存储token
			uni.setStorageSync('token', state.token) //JSON.stringify:将数据转换成字符串
		},
		  // 更新重定向的信息对象
		  updateRedirectInfo(state, info) {
		    state.redirectInfo = info
		  }
	},

	// 数据包装器
	getters: {
		// 收货详细地址的计算属性
		addstr(state) {
			// 如果是空对象直接返回一个空字符串
			if (!state.address.provinceName) return ''

			// 拼接 省，市，区，详细地址 的字符串并返回给用户
			return state.address.provinceName + state.address.cityName + state.address.countyName + state.address
				.detailInfo
		},
	},
}
